home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 85 / 085.d81 / i-prg source < prev    next >
Text File  |  2022-08-26  |  18KB  |  1,609 lines

  1. .org $c000
  2. ;mem
  3. ;dis
  4. .obj "@0:i-prg c000"
  5.  
  6. jmp over;        49152
  7. jmp i'menu;      49155
  8. jmp stash;       49158
  9. jmp restore;     49161
  10. jmp screen'disk; 49164
  11. jmp spill'guts;  49167
  12. jmp gut'out'screen; 49170
  13. jmp change'menu'mode; 49173
  14. jmp directory;   49176
  15. jmp fill'box;    49179
  16. jmp get'device'prompt
  17. jmp get'command
  18. jmp reconnect
  19. jmp user'message
  20.  
  21. over lda #0
  22. sta name'flag
  23. lda #255
  24. sta mode
  25.  
  26. clear'header ldy #39
  27. lda #160
  28. - sta header'memory,y
  29. dey
  30. bpl -
  31.  
  32. main lda main'background
  33. sta 53281
  34. lda main'border
  35. sta 53280
  36.  
  37. jsr print'header
  38. jsr print'entry'box
  39. bit name'flag
  40. bmi enter'i'menu
  41. jmp get'prg'name
  42.  
  43. enter'i'menu jsr gut'out'screen
  44. jsr print'main'menu
  45.  
  46. print'device'number lda number+5
  47. sta 646
  48. ldx #11
  49. ldy #29
  50. clc
  51. jsr $fff0
  52. ldx device
  53. lda #0
  54. sta remember
  55. jsr $bdcd
  56.  
  57. don't'save'screen lda #65
  58. sta number+8
  59. jsr da'box
  60.  
  61. main'get jsr $ffe4   ;get menu selection
  62.  
  63. sta temp
  64.  
  65. cmp #"1"
  66. beq exit'main
  67. cmp #"2"
  68. beq set'default'device
  69. cmp #"3"
  70. beq dir
  71. cmp #"4"
  72. beq disk'command
  73. cmp #"5"
  74. beq customize
  75. cmp "6"
  76. beq help
  77. cmp #"7"
  78. beq let's'book
  79.  
  80. exit'main lda temp
  81. sta 631
  82. lda #1
  83. sta 198
  84. lda number+5
  85. sta 646
  86. rts
  87.  
  88. set'default'device jsr get'device'prompt
  89. jmp enter'i'menu
  90.  
  91. dir jsr directory
  92. jmp enter'i'menu
  93.  
  94. disk'command jsr get'command
  95. jmp main
  96.  
  97. customize jsr get'custom'menu
  98. jmp main
  99.  
  100. help lda #0
  101. sta 198
  102. sta screen
  103. sta number
  104. jsr screen'restore
  105. - jsr $ffe4
  106. beq -
  107. jmp main
  108.  
  109. let's'book jmp reconnect
  110.  
  111.  
  112. i'menu lda #0
  113. sta remember
  114.  
  115. ldx #6
  116. stx numbers'to'get
  117. jsr get'number
  118.  
  119. lda number
  120. sta number+8
  121. and #31
  122. sta number
  123.  
  124. bit number+8
  125. bvs check'x'range
  126. bmi check'x'range
  127. jsr save'screen
  128.  
  129. check'x'range lda number+1
  130. bne +
  131. jsr x'out
  132. + lda number+3
  133. bne +
  134. jsr x'out
  135.  
  136. + jsr line'links
  137. lda #0
  138. sta max
  139.   
  140. ldx number+2
  141. ldy number+1
  142. clc
  143. jsr $fff0
  144. lda number+5
  145. sta 646
  146.  
  147. lda number
  148. sta digit
  149.  
  150. - jsr get'string
  151. dec digit
  152. bne -
  153. beq da'box
  154.  
  155. menu'jump jmp menu
  156.  
  157. da'box bit number+3
  158. bmi menu'jump
  159.  
  160. box ldx number+2
  161. dex
  162. ldy number+1
  163. dey
  164. clc
  165. jsr $fff0
  166.  
  167. lda number+3
  168. sta 646
  169.  
  170. lda #176
  171. jsr $ffd2
  172.  
  173. - lda #96
  174. jsr $ffd2
  175. lda 211
  176. cmp max
  177. bne -
  178.  
  179. lda #174
  180. jsr $ffd2
  181. inc 214
  182.  
  183. lda number
  184. sta digit
  185.  
  186. line ldx number+1
  187. dex
  188. stx 211
  189. jsr 58732
  190. lda #125
  191. jsr $ffd2
  192. lda max
  193. sta 211
  194. jsr 58732
  195. lda #125
  196. jsr $ffd2
  197.  
  198. bit number+3
  199. bvc after'double
  200.  
  201. lda digit
  202. cmp #1
  203. beq after'double
  204.  
  205. inc 214
  206. ldx number+1
  207. dex
  208. stx 211
  209. jsr 58732
  210. lda #171
  211. jsr $ffd2
  212.  
  213. - lda #96
  214. jsr $ffd2
  215. lda 211
  216. cmp max
  217. bne -
  218.  
  219. lda #179
  220. jsr $ffd2
  221.  
  222. after'double inc 214
  223. dec digit
  224. bne line
  225.  
  226. lda number+1
  227. sta 211
  228. dec 211
  229. jsr 58732
  230.  
  231. lda #173
  232. jsr $ffd2
  233.  
  234. - lda #96
  235. jsr $ffd2
  236. lda 211
  237. cmp max
  238. bne -
  239.  
  240. lda #189
  241. jsr $ffd2
  242.  
  243. menu lda remember
  244. sta item
  245. sta current
  246. sta previous
  247.  
  248. lda number+2
  249. clc
  250. adc remember
  251. tax
  252. ldy #0
  253. clc
  254. jsr $fff0
  255. lda number+4
  256. sta digit
  257. jsr highlight'routine
  258.  
  259. get'key jsr $ffe4
  260. beq get'key
  261. cmp #29
  262. beq crsr'quit
  263. cmp #157
  264. beq crsr'quit
  265.  
  266. cmp #17
  267. beq crsr'down
  268. cmp #145
  269. beq crsr'up
  270. cmp #13
  271. beq quit
  272. cmp #49
  273. bcc get'key
  274. cmp #58
  275. bcs get'key
  276.  
  277. number'key'pressed sec
  278. sbc #49
  279. tay
  280. cpy number
  281. bcs get'key
  282.  
  283. lda item
  284. sta previous
  285. sty item
  286. jsr highlight
  287.  
  288. - bit 197
  289. bvc -
  290.  
  291. quit lda item
  292. clc
  293. adc #49
  294. sta 631
  295. lda #1
  296. sta 198
  297. bit number+8
  298. bvs +
  299. bmi +
  300. lda #4
  301. sta screen
  302. jsr screen'restore
  303. lda device
  304. sta 186
  305. + jmp line'links
  306.  
  307. crsr'quit bit mode
  308. bvs get'key
  309. sta 631
  310. lda #1
  311. sta 198
  312. rts
  313.  
  314. crsr'up lda item
  315. sta previous
  316. sec
  317. sbc #1
  318. bpl +
  319. ldx number
  320. dex
  321. txa
  322. + sta item
  323. jsr highlight
  324. jmp get'key
  325.  
  326. crsr'down lda item
  327. sta previous
  328. clc
  329. adc #1
  330. cmp number
  331. bne +
  332. lda #0
  333. + sta item
  334. jsr highlight
  335. jmp get'key
  336.  
  337. highlight lda previous
  338. bit number+3
  339. bvc +
  340. asl
  341. + clc
  342. adc number+2
  343. bit number+3
  344. tax
  345. ldy #0
  346. jsr $fff0
  347. lda number+5
  348. sta digit
  349. jsr highlight'routine
  350. lda item
  351. bit number+3
  352. bvc +
  353. asl
  354. + clc
  355. adc number+2
  356. tax
  357. ldy #0
  358. jsr $fff0
  359. lda number+4
  360. sta digit
  361.  
  362. highlight'routine ldy number+1
  363. - lda (209),y
  364. eor #128
  365. sta (209),y
  366. lda digit
  367. sta (243),y
  368. iny
  369. cpy max
  370. bne -
  371. rts
  372.  
  373. ;**** get number from BASIC ****
  374.  
  375. get'number ldx #0
  376. stx current'number
  377.  
  378. - jsr $aefd
  379. jsr $ad8a
  380. jsr $b7f7
  381. lda $14  ; got it!
  382.  
  383. ldx current'number
  384. sta number,x
  385. inc current'number
  386. dec numbers'to'get
  387. beq +
  388. bne -
  389. + rts
  390.  
  391. ;***** get string from BASIC ****
  392.  
  393. get'string jsr general'string
  394. cmp #41
  395. bcc +
  396. lda #40
  397. + sta string'length
  398.  
  399. lda number+1
  400. sta 211
  401. jsr 58732
  402.  
  403. ldy #0
  404.  
  405. - lda ($22),y
  406. jsr $ffd2
  407. iny
  408. cpy string'length
  409. bne -
  410. lda 211
  411. cmp max
  412. bcc +
  413. sta max
  414. + inc 214
  415. bit number+3
  416. bvc +
  417. inc 214
  418. + jsr 58732
  419.  
  420. lda max
  421. cmp #41
  422. bcc +
  423. jsr x'out
  424. + lda 214
  425. cmp #24
  426. bcc +
  427. jsr x'out
  428. + rts
  429.  
  430. ;**** Line Links ****
  431.  
  432. line'links ldy #24
  433. - lda 217,y
  434. ora #128
  435. sta 217,y
  436. dey
  437. bpl -
  438. rts
  439.  
  440. print'header lda #147
  441. jsr $ffd2
  442. print'header'2 lda #19
  443. jsr $ffd2
  444.  
  445. ldy #39
  446. - lda #239
  447. sta (209),y
  448. lda header'1
  449. sta (243),y
  450. dey
  451. bpl -
  452. lda #13
  453. jsr $ffd2
  454.  
  455. ldy #119
  456. - lda #160
  457. sta (209),y
  458. lda header'2
  459. sta (243),y
  460. dey
  461. bpl -
  462.  
  463. lda #13
  464. jsr $ffd2
  465. ldy #39
  466.  
  467. - lda header'memory,y
  468. sta (209),y
  469. dey
  470. bpl -
  471.  
  472.  
  473. inc 214
  474. inc 214
  475. jsr 58732; fix cursor and pointer
  476.  
  477. ldy #39
  478. - lda #247
  479. sta (209),y
  480. lda header'3
  481. sta (243),y
  482. dey
  483. bpl -
  484.  
  485. rts
  486.  
  487. print'entry'box ldx #22
  488. ldy #0
  489. clc
  490. jsr $fff0
  491. ldy #0
  492. lda #112
  493. sta (209),y
  494. lda header'2
  495. sta (243),y
  496. ldy #39
  497. sta (243),y
  498. lda #110
  499. sta (209),y
  500. dey
  501. - lda #64
  502. sta (209),y
  503. lda header'2
  504. sta (243),y
  505. dey
  506. bne -
  507. lda #13
  508. jsr $ffd2
  509. lda header'2
  510. sta (243),y
  511. lda #93
  512. sta (209),y
  513. ldy #39
  514. sta (209),y
  515. lda header'2
  516. sta (243),y
  517. lda #13
  518. jsr $ffd2
  519. ldy #38
  520. - lda #64
  521. sta (209),y
  522. lda header'2
  523. sta (243),y
  524. dey
  525. bne -
  526. sta (243),y
  527. lda #109
  528. sta (209),y
  529. ldy #39
  530. lda #125
  531. sta (209),y
  532. lda header'2
  533. sta (243),y
  534. lda #19
  535. jmp $ffd2
  536.  
  537. print'main'menu ldy #7
  538. - lda main'menu'parameters,y
  539. sta number,y
  540. dey
  541. bpl -
  542.  
  543. lda number+2
  544. sta 214
  545. jsr 58732
  546.  
  547. lda #30
  548. sta string'length
  549.  
  550. lda number+1
  551. sta 211
  552. jsr 58732
  553.  
  554. ldy #0
  555. sty max
  556. lda number+5
  557. sta 646
  558.  
  559. - lda default'menus,y
  560. beq ++
  561. jsr $ffd2
  562. cmp #13
  563. bne +
  564. sty temp
  565. lda number+1
  566. sta 211
  567. inc 214
  568. jsr 58732
  569. ldy temp
  570.  
  571. + iny
  572. bne -
  573. + lda 211
  574. cmp max
  575. bcc print'prompt
  576. sta max
  577.  
  578.  
  579. print'prompt ldx #23
  580. ldy #2
  581. clc
  582. jsr $fff0
  583. lda number+4
  584. sta 646
  585. ldy #0
  586. - lda the'prompt,y
  587. beq +
  588. jsr $ffd2
  589. iny
  590. bne -
  591. + rts
  592.  
  593. erase'box ldy #0
  594. ldx #23
  595. clc
  596. jsr $fff0
  597. ldy #38
  598. lda #32
  599. - sta (209),y
  600. dey
  601. bne -
  602. rts
  603.  
  604.  
  605. ;**** wait ****
  606.  
  607. wait lda 53265       
  608. bpl wait   
  609. rts
  610.  
  611. ;**** SCREEN STASH ****
  612.  
  613. screen'stash ldy screen
  614. cpy #9 ; ahem!  there are only 9 screens (0-8)
  615. bcc +
  616. rts
  617.  
  618. + sei
  619. ldx #0
  620. lda 1
  621. sta temp
  622. stx 1
  623. lda screens,y
  624. stx 253
  625. sta 254;  dest screen
  626. lda 648
  627. sta 252;  source screen
  628. ldy #0
  629. sty 251
  630.  
  631. ;begin copying
  632.  
  633. - lda (251),y
  634. sta (253),y
  635. iny
  636. bne -
  637. inx
  638. inc 254
  639. inc 252
  640.  
  641. cpx #4
  642. bne -
  643. ldx #0
  644.  
  645. lda #>55296
  646. sta 252
  647.  
  648. - dec 1
  649. lda (251),y
  650. inc 1
  651. sta (253),y
  652. iny
  653. bne -
  654. inc 252
  655. inc 254
  656. inx
  657. cpx #4
  658. bne -
  659.  
  660. lda temp
  661. sta 1
  662. cli
  663. lda 53280
  664. ldy number
  665. sta border,y
  666. lda 53281
  667. sta background,y
  668. rts
  669.  
  670. screen'restore ldy screen
  671. cpy #9 ; ahem!  there are only 9 screens (0-8)
  672. bcc +
  673. rts
  674.  
  675. / lda 53265
  676. bpl -
  677.  
  678. sei
  679. ldx #0
  680. lda 1
  681. sta temp
  682. stx 1
  683. lda screens,y
  684. stx 253
  685. sta 254;  source screen
  686. lda 648
  687. sta 252;  dest screen
  688. ldy #0
  689. sty 251
  690.  
  691. ;begin copying
  692.  
  693. - lda (253),y
  694. sta (251),y
  695. iny
  696. bne -
  697. inx
  698. inc 254
  699. inc 252
  700.  
  701. cpx #4
  702. bne -
  703. ldx #0
  704.  
  705. lda #>55296
  706. sta 252
  707.  
  708. - lda (253),y
  709. dec 1
  710. sta (251),y
  711. inc 1
  712. iny
  713. bne -
  714. inc 252
  715. inc 254
  716. inx
  717. cpx #4
  718. bne -  
  719.  
  720. lda temp
  721. sta 1
  722. cli
  723.  
  724. ldy number
  725. lda border,y
  726. sta 53280
  727. lda background,y
  728. sta 53281
  729. rts
  730.  
  731. x'out lda number+3
  732. ora #128
  733. sta number+3
  734. rts
  735.  
  736. get'device'prompt jsr save'screen
  737.  
  738. jsr erase'box
  739.  
  740. ldy #6
  741. ldx #23
  742. clc
  743. jsr $fff0
  744. lda number+4
  745. sta 646
  746. ldy #0
  747. - lda device'prompt,y
  748. beq print'device'menu
  749. jsr $ffd2
  750. iny
  751. bne -
  752.  
  753. print'device'menu ldy #2
  754. - lda device'parameters,y
  755. sta number,y
  756. dey
  757. bpl -
  758.  
  759. lda number+3
  760. and #15
  761. sta number+3
  762.  
  763. lda number+2
  764. sta 214
  765. lda number+1
  766. sta 211
  767. jsr 58732
  768.  
  769. lda #15
  770. sta string'length
  771.  
  772. ldy #0
  773. sty max
  774. lda number+5
  775. sta 646
  776.  
  777. - lda device'menu,y
  778. beq ++
  779. jsr $ffd2
  780. cmp #13
  781. bne +
  782. sty temp
  783. lda number+1
  784. sta 211
  785. jsr 58732
  786. ldy temp
  787.  
  788. + iny
  789. bne -
  790. + lda 211
  791. cmp max
  792. bcc +
  793. sta max
  794.  
  795. + jsr da'box
  796.  
  797. jsr $ffe4
  798. sec
  799. sbc #41
  800. sta device
  801. sta 186
  802. jsr check'device
  803. lda status
  804. bpl +
  805. jmp print'device'menu
  806.  
  807. + lda #4
  808. sta screen
  809. jmp screen'restore
  810.  
  811. get'command jsr input
  812. jmp command
  813.    
  814.  
  815. get'custom'menu jsr save'screen
  816.  
  817. print'custom'menu ldy #2
  818. - lda custom'parameters,y
  819. sta number,y
  820. dey
  821. bpl -
  822.  
  823. lda number+3
  824. and #15
  825. sta number+3
  826.  
  827. lda number+2
  828. sta 214
  829. lda number+1
  830. sta 211
  831. jsr 58732
  832.  
  833. lda #22
  834. sta string'length
  835.  
  836. ldy #0
  837. sty max
  838. lda number+5
  839. sta 646
  840.  
  841. - lda customize'menu,y
  842. beq ++
  843. jsr $ffd2
  844. cmp #13
  845. bne +
  846. sty temp
  847. lda number+1
  848. sta 211
  849. jsr 58732
  850. ldy temp
  851.  
  852. + iny
  853. bne -
  854. + lda 211
  855. cmp max
  856. bcc +
  857. sta max
  858.  
  859. + jsr da'box
  860.  
  861. jsr $ffe4
  862.  
  863. tay
  864. sec